home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 May: Tool Chest / Developer CD Series May 1996 (Tool Chest) (Apple Computer) (1996).iso / Tool Chest / Development Tools & Languages / Dylan Related / Mindy / Mindy 1.2 - Mac PPC / demos / debug / fact.dyl < prev    next >
Encoding:
Text File  |  1995-03-15  |  870 b   |  37 lines  |  [TEXT/MPCC]

  1. module:  Dylan-User
  2.  
  3. define method fact (n :: <integer>)
  4.     let zero = as(<extended-integer>, 0);
  5.     let one = as(<extended-integer>, 1);
  6.     local method fact-acc (value, n)
  7.         if (n = zero | n = one)
  8.             value;
  9.         else
  10.             fact-acc(value * n, n - one);
  11.         end if;
  12.     end method;
  13.     fact-acc(one, as(<extended-integer>, n));
  14. end method;
  15.  
  16. define method fact-iter (n :: <integer>)
  17.     let one = as(<extended-integer>, 1);
  18.     let two = as(<extended-integer>, 2);
  19.     let f = one;
  20.     n = as(<extended-integer>, n);
  21.     for (i from two to n)
  22.         f := f * i;
  23.     end for;
  24.     f;
  25. end method;
  26.  
  27. define method main (arg0, #rest args)
  28.     puts("testing fact.\n"); // fflush();
  29.     break("testing fact.");
  30.     let f500 = fact(500);
  31.     puts("fact(500) = "); print(f500); fflush();
  32.     puts("testing fact-iter.\n"); fflush();
  33.     let fi500 = fact-iter(500);
  34.     puts("fact-iter(500) = "); print(fi500); fflush();
  35. //    break("testing!");
  36. end;
  37.